]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
modalDialog: Always use a stack for the background
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 22 Mar 2013 23:39:05 +0000 (00:39 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 7 May 2013 18:52:58 +0000 (20:52 +0200)
Currently a system modal dialog's actor hierarchy depends on whether
events should be blocked while the dialog is shown or not. Change
it to always contain a stack, to allow subclasses to add additional
background elements.

https://bugzilla.gnome.org/show_bug.cgi?id=694912

js/ui/modalDialog.js

index beac7fe09b845c7a17d3600bd494e6bbc7f63be0..84c5c3b93bb697d603b4a0d7a397d43bd916dced 100644 (file)
@@ -65,7 +65,9 @@ const ModalDialog = new Lang.Class({
         this._group.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
         this._group.connect('key-release-event', Lang.bind(this, this._onKeyReleaseEvent));
 
-        this._backgroundBin = new St.Bin();
+        this.backgroundStack = new Shell.Stack();
+        this._backgroundBin = new St.Bin({ child: this.backgroundStack,
+                                           x_fill: true, y_fill: true });
         this._monitorConstraint = new Layout.MonitorConstraint();
         this._backgroundBin.add_constraint(this._monitorConstraint);
         this._group.add_actor(this._backgroundBin);
@@ -81,15 +83,10 @@ const ModalDialog = new Lang.Class({
                                                    { inhibitEvents: true });
             this._lightbox.highlight(this._backgroundBin);
 
-            let stack = new Shell.Stack();
-            this._backgroundBin.child = stack;
-
             this._eventBlocker = new Clutter.Actor({ reactive: true });
-            stack.add_actor(this._eventBlocker);
-            stack.add_actor(this.dialogLayout);
-        } else {
-            this._backgroundBin.child = this.dialogLayout;
+            this.backgroundStack.add_actor(this._eventBlocker);
         }
+        this.backgroundStack.add_actor(this.dialogLayout);
 
 
         this.contentLayout = new St.BoxLayout({ vertical: true });